Storage devices currently utilize interrupts to process I/O requests received from user-mode applications. For example, after completing a requested I/O operation, a storage device generates an interrupt which is transmitted to its host computer. The operating system of the host computer receives the interrupt and dispatches it to a kernel-mode interrupt handler, which identifies the corresponding I/O request and completes the request by providing an appropriate response to the requesting application.
The proportion of I/O processing time attributable to the above process may be unacceptable in systems which use modern Solid-State Drives or other low-latency storage devices, particularly under intensive I/O workloads. These issues are exacerbated in a virtualized environment, where the interrupt generated by the storage device must be delivered to a physical CPU, to a Hypervisor layer, and then to a virtual CPU.
Moreover, a low latency storage device may be capable of delivering its I/O interrupts to only a limited number of CPUs. Consequently, the CPUs which receive the I/O interrupts may become saturated before the storage device reaches its maximum throughput.
Systems are desired to process incoming I/O requests without using hardware interrupts and while providing reduced latency and increased throughput.